// 双指针 时间复杂度 O(n) 空间复杂度 O(1)

class Solution {
public:
    void sortColors(vector<int>& nums) {
        int pos0 = 0, pos2 = nums.size() - 1, i = 0;
        while (i <= pos2) {
            if (nums[i] == 0) {
                swap(nums[i], nums[pos0]);
                i = (i == pos0) ? i + 1 : i;
                pos0++;
            }
            else if (nums[i] == 2) {
                swap(nums[i], nums[pos2]);
                pos2--;
            }
            else {
                i++;
            }
        }
    }
};